package org.aeon.service;


import org.aeon.entity.dto.UserDto;

import java.util.List;
import java.util.Set;

/**
 * @author MissingAeon
 * @email nian0950@qq.com
 * @date 2024-01-25 17:39:34
 */
public interface UserGroupRelationService {
    /**
     * 群聊批量插入组员
     * （需要确保不重复）
     *
     * @param groupId
     * @param userIds
     * @return
     */
    int insertBatchUserGroupRelation(Long groupId, Long... userIds);

    /**
     * 删除一个群聊关系（退出群聊）
     *
     * @param groupId
     * @param userId
     * @return
     */
    int deleteUserGroupRelation(Long groupId, Long userId);

    /**
     * 将 members 加入群聊
     * 如果 members 有误将被忽略
     *
     * @param groupId
     * @param userId
     * @param members
     */
    int fillGroup(Long groupId, Long userId, Set<Long> members);

    /**
     * 获取群聊成员
     *
     * @param groupId
     * @return
     */
    Set<UserDto> getMembers(Long groupId);

    /**
     * 查询该用户是否为该群聊成员
     *
     * @param groupId
     * @param userId
     * @return
     */
    boolean isGroupMember(Long groupId, Long userId);

    /**
     * 获取指定用户加入的所有群聊
     *
     * @param userId
     * @return
     */
    List<Long> getGroups(Long userId);

}

